package br.ufc.quixada.controller;

import java.io.Serializable;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpSession;

import br.ufc.quixada.exceptions.ErroLoginException;
import br.ufc.quixada.model.DAO.UsuarioJDAO;
import br.ufc.quixada.model.entidades.Usuario;
import br.ufc.quixada.model.interfaces.UsuarioDAO;

@ViewScoped
@ManagedBean(name = "loginBean")
public class LoginBean implements Serializable {

	private static final long serialVersionUID = 1L;
	public static final String TIPO_USUARIO = "USUARIO";
	public static final String TIPO_ADMINISTRADOR = "ADMINISTRADOR";
	private String email;

	private Usuario usuario;

	public LoginBean() {
		usuario = new Usuario();
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public Usuario getUsuario() {
		return usuario;
	}

	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}

	public String fazerLogin() {

		UsuarioDAO dao = new UsuarioJDAO();

		try {
			usuario = dao.loginUsuario(usuario);
			HttpSession session = (HttpSession) FacesContext
					.getCurrentInstance().getExternalContext().getSession(true);
			String nome = (usuario.getNome().split(" "))[0];
			session.setAttribute("nome", nome);
			session.setAttribute("usuario", usuario);
			System.out.println(usuario.getId());
			session.setAttribute("tipo", LoginBean.TIPO_USUARIO);
			return "/usuario/home?faces-redirect=true";
		} catch (ErroLoginException ex) {
			// ex.printStackTrace();
			FacesContext.getCurrentInstance().addMessage(
					"Aviso",
					new FacesMessage("Falha de autenticação",
							"login ou senha inválidos!"));
			System.out.println("Erro senha\n\n\n");
		}

		return "?faces-redirect=true";
	}
	
	public String realizarLogout() {

		HttpSession session = (HttpSession) FacesContext.getCurrentInstance()
				.getExternalContext().getSession(false);

		if (session != null) {
			session.invalidate();
		}

		return "/login?faces-redirect=true";
	}

}
